home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok88 / arexxbox / oberon / test / test2o.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  99 lines

  1.  
  2. MODULE Test2o;
  3.  
  4. IMPORT
  5.   arb := test2ARB,
  6.   d := Dos,
  7.   e := Exec,
  8.   rx := Rxtest2,
  9.   rxh := ARBRexxHost;
  10.  
  11. VAR
  12.   myhost: rx.RexxHost;
  13.   portname: e.STRPTR;
  14.  
  15. (*
  16. void argArrayDone( void )
  17. {
  18.   if( program_icon )
  19.     FreeDiskObject( program_icon );
  20. }
  21.  
  22. char **argArrayInit( LONG argc, char **argv )
  23. {
  24.   if( argc )
  25.     return argv;
  26.  
  27.   else
  28.   {
  29.     struct WBStartup *wbs = (struct WBStartup * ) argv;
  30.  
  31.     if( program_icon = GetDiskObject((char * ) wbs->sm_ArgList->wa_Name) )
  32.       return( (char ** ) program_icon->do_ToolTypes );
  33.   }
  34.  
  35.   return NULL;
  36. }
  37.  
  38.  
  39. void init( int argc, char *argv[] )
  40. {
  41.   if( ttypes = argArrayInit( argc, (char ** ) argv ) )
  42.   {
  43.     portname = FindToolType( (UBYTE ** ) ttypes, "PORTNAME" );
  44.   }
  45. }
  46. *)
  47.  
  48. (* Hauptprogramm *)
  49.  
  50. VAR
  51.   fh: d.FileHandlePtr;
  52.   s: LONGSET;
  53.  
  54. BEGIN
  55.   (* Initialisieren *)
  56.   (* Init( argc, argv ); *)
  57.  
  58.   myhost := rx.SetupARexxHost(portname);
  59.   IF myhost = NIL THEN
  60.     d.PrintF( "No Host\n" );
  61.     HALT(20);
  62.   END;
  63.  
  64.   (* Erst eine CommandShell... *)
  65.  
  66.   fh := d.Open( "CON:////CommandShell/AUTO", d.newFile );
  67.   IF fh # NIL THEN
  68.     myhost.CommandShell( fh, fh, "test> " );
  69.     d.OldClose( fh );
  70.   ELSE
  71.     d.PrintF( "No Console\n" );
  72.   END;
  73.  
  74.   (* ...und dann 'richtiger' ARexx-Betrieb *)
  75.  
  76.   d.PrintF("Address me on Port ");
  77.   d.PrintF(myhost.name);
  78.   d.PrintF("!\nCancel me with CTRL-C\n");
  79.  
  80.   LOOP;
  81.     s := e.Wait(LONGSET{d.ctrlC,myhost.port.sigBit});
  82.     IF d.ctrlC IN s THEN
  83.       IF rxh.cmdShell IN myhost.flags THEN
  84.         d.PrintF( "can't quit, commandshell still open!\n" );
  85.       ELSE
  86.         EXIT;
  87.       END;
  88.     ELSE
  89.       myhost.Handle();
  90.     END;
  91.   END;
  92.  
  93. CLOSE
  94.   (* argArrayDone(); *)
  95.   IF myhost # NIL THEN rx.CloseDownARexxHost(myhost); END;
  96.  
  97. END Test2o.
  98.  
  99.